#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include "MyString.h"
#include "MyCalulation.h"

int getMaxVal(int num1) // 判断是否是偶数
{
    if (num1 % 2 == 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int getArraySum(int *nums, int numsize) // 数组里的数字相加     // 如果数据做函数参数，会弱化为指针
{
    int sum = 0;
    for (int idx = 0; idx < numsize; idx++)
    {
        sum += nums[idx];
    }
    return sum;
}

void swapNum(int *val1, int *val2) // 交换两个函数      // void表示没有返回值
{
    int tmp = *val1;
    *val1 = *val2;
    *val2 = tmp;
}

void num(const char *buffer, int *str1, int *str2, int *str3)
{
    *str1 = 0;
    *str2 = 0;
    *str3 = 0;
    while (*buffer != '\0')
    {
        if (*buffer >= 'a' && *buffer <= 'z')
        {
            (*str1)++;
        }
        else if (*buffer >= 'A' && *buffer <= 'Z')
        {
            (*str2)++;
        }
        else
        {
            (*str3)++;
        }
        *buffer++;
    }
}

int main()
{
    //     // 函数的三要素:
    //     // 1,函数名          :见名知意
    //     // 2,函数的参数      :形参
    //     // 这里面可以是任意的数据类型
    //     // 3函数的返回值     :可以返回任意类型

    //// 判断奇偶数
    //  int val1 = 100;
    //  int snum = getMaxVal(val1);
    //  printf("%d\n", snum);
    //  printf("\n");

    // // 计算字符串的长度
    //  char *arr = "hello word!";
    //  int num = mystrlen(arr);
    //  printf("%d\n", num);
    //  printf("\n");

    //// 计算数组里数字的和
    // int nums[] = {11, 22, 33, 44, 55, 66, 77, 88, 99};
    // int sum = getArraySum(nums, sizeof(nums) / sizeof(nums[0]));
    // printf("%d\n", sum);

    // // 交换两个数字
    //  int val1=100;
    //  int val2=200;
    //  swapNum(&val1,&val2);
    //  printf("val1=%d val2=%d\n",val1,val2);

    // // 比较两个字符串的大小
    // char *str1 = "zhangsan";
    // char *str2 = "zhangsi";
    // int max = Mystrcmp(str1, str2);
    // printf("%d\n", max);

    // // 拼接两个字符串
    // char str1[30]="zhang,";
    // char str2[]="san!";
    // MyStrcat(str1,str2);
    // printf("%s\n",str1);

    // //加减乘除
    // int sum=Myadd(1,8);
    // printf("%d\n", sum);
    // int sum1=Mysub(1,8);
    // printf("%d\n", sum1);
    // int sum2=Mymultipy(1,8);
    // printf("%d\n", sum2);
    // int sum3=Mydivide(1,8);
    // printf("%d\n", sum3);

    /*
        传入参数 和 传出参数
        传入参数:不可以被更改的参数. 如果是整数,就是不加地址,如果是字符串,就是加const;
        传出参数:一定会被修改的参数叫做传出参数. 如果是整数,一定加地址
    */

    // 传入参数和传出参数
    const char buffer[] = "hElLo woRld   ";
    /*调用函数的参数叫 实参*/
    int str1 = 0;
    int str2 = 0;
    int str3 = 0;
    num(buffer, &str1, &str2, &str3);
    printf("%d\n", str1);
    printf("%d\n", str2);
    printf("%d\n", str3);

    return 0;
}
